package com.sse.logica;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

/**
 * Servlet Filter implementation class FiltroSeguridad
 */
public class FiltroSeguridad implements javax.servlet.Filter {

	//pagina a la que se va a enrutar si no esta autenticado
	private String PAGINA_INICIO;
	
	private String PAGINA_ERROR;
	
	private String MENSAJE_ERROR;
	

	/**
	 * @see Filter#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}

	/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		
		HttpServletRequest httpRequest = (HttpServletRequest) request;

		boolean aceptado = false;
		MENSAJE_ERROR = "error_permiso_recurso";
		
		//Evaluar si esta en la pagina inicial
		if (!httpRequest.getRequestURI().equals(httpRequest.getContextPath() + "/") && !httpRequest.getRequestURI().equals(httpRequest.getContextPath() + PAGINA_INICIO)){
			
			//FALTA VALIDAR QUE EL RECURSO PEDIDO ESTE ACEPTADO PARA LOS ROLES DEL USUARIO
			if (httpRequest.getSession().getAttribute("usuario") == null) {
				
				String usuario   = request.getParameter("usuario");
				String password  = request.getParameter("password");
				
				//CAMBIAR POR UNA AUTENTICACION CORRECTA
				if (usuario != null && password != null){
					if (usuario.equals("a") && password.equals("b")){
						//aceptar la peticion del usuario
						httpRequest.getSession().setAttribute("usuario",usuario);
						aceptado = true;
					}else{
						MENSAJE_ERROR = "error_autenticacion";
					}
				}
			}else{
				aceptado = true;
			}
		}else{
			aceptado = true;
		}
		
		
		if (aceptado) {
			//aceptar la peticion del usuario
			MENSAJE_ERROR = null;
			chain.doFilter(request, response);
		}else{
			
			httpRequest.getRequestDispatcher(PAGINA_INICIO).forward(request, response);
		}
	}

	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig fConfig) throws ServletException {
		
		PAGINA_INICIO   = fConfig.getInitParameter("pagina_inicio");
		
		PAGINA_ERROR 	= fConfig.getInitParameter("pagina_error");
	}

}
